import request from '@/libs/request';

/**
 * @description 商户优惠券管理 -- 获取优惠券列表
 * @param {Object} params 查询参数
 * @param {Number} params.page 页码
 * @param {Number} params.limit 每页数量
 * @param {String} params.status 状态筛选 (0:禁用, 1:启用)
 * @param {String} params.is_distributed 分发状态筛选 (0:未分发, 1:已分发)
 * @param {Number} params.merchant_id 商户ID (admin后台使用)
 */
export function getCouponList(params) {
  return request({
    url: 'merchant/coupons',
    method: 'get',
    params,
  });
}

/**
 * @description 商户优惠券管理 -- 获取优惠券统计信息
 * @param {Number} merchant_id 商户ID (admin后台使用)
 */
export function getCouponStatistics(merchant_id = null) {
  const params = merchant_id ? { merchant_id } : {};
  return request({
    url: 'merchant/coupons/statistics',
    method: 'get',
    params,
  });
}

/**
 * @description 商户优惠券管理 -- 批量上传优惠券
 * @param {FormData} formData 包含文件的表单数据
 * @param {Number} merchant_id 商户ID (admin后台使用)
 */
export function batchUploadCoupons(formData, merchant_id = null) {
  const url = merchant_id ? 
    `merchant/coupons/batch-upload?merchant_id=${merchant_id}` : 
    'merchant/coupons/batch-upload';
    
  return request({
    url: url,
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data',
    },
  });
}

/**
 * @description 商户优惠券管理 -- 更新优惠券状态
 * @param {Number} id 优惠券ID
 * @param {Number} status 状态值 (0:禁用, 1:启用)
 * @param {Number} merchant_id 商户ID (admin后台使用)
 */
export function updateCouponStatus(id, status, merchant_id = null) {
  const data = { status };
  if (merchant_id) {
    data.merchant_id = merchant_id;
  }
  
  return request({
    url: `merchant/coupons/${id}/status`,
    method: 'put',
    data: data,
  });
}

/**
 * @description 商户优惠券管理 -- 删除优惠券
 * @param {Number} id 优惠券ID
 * @param {Number} merchant_id 商户ID (admin后台使用)
 */
export function deleteCoupon(id, merchant_id = null) {
  const params = merchant_id ? { merchant_id } : {};
  
  return request({
    url: `merchant/coupons/${id}`,
    method: 'delete',
    params: params,
  });
}

/**
 * @description 商户优惠券管理 -- 批量删除优惠券
 * @param {Array} ids 优惠券ID数组
 * @param {Number} merchant_id 商户ID (admin后台使用)
 */
export function batchDeleteCoupons(ids, merchant_id = null) {
  const data = { ids };
  if (merchant_id) {
    data.merchant_id = merchant_id;
  }
  
  return request({
    url: 'merchant/coupons/batch-delete',
    method: 'post',
    data: data,
  });
}

/**
 * @description 商户优惠券管理 -- 批量更新状态
 * @param {Array} ids 优惠券ID数组
 * @param {Number} status 状态值 (0:禁用, 1:启用)
 * @param {Number} merchant_id 商户ID (admin后台使用)
 */
export function batchUpdateCouponStatus(ids, status, merchant_id = null) {
  const data = { ids, status };
  if (merchant_id) {
    data.merchant_id = merchant_id;
  }
  
  return request({
    url: 'merchant/coupons/batch-status',
    method: 'post',
    data: data,
  });
}

/**
 * @description 商户优惠券管理 -- 导出优惠券列表为CSV
 * @param {Object} params 导出参数
 * @param {String} params.status 状态筛选 (可选)
 * @param {String} params.is_distributed 分发状态筛选 (可选)
 * @param {Number} params.merchant_id 商户ID (admin后台使用)
 */
export function exportCoupons(params) {
  return request({
    url: 'merchant/coupons/export',
    method: 'get',
    params: params,
    responseType: 'blob',
  });
}

/**
 * @description 商户优惠券管理 -- 下载批量上传模版
 */
export function downloadCouponTemplate() {
  return request({
    url: 'merchant/coupons/download-template',
    method: 'get',
    responseType: 'blob',
  });
}